package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
JDBC Java DataBase Connectivity
 */
public class JDBCDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        /*
        使用JDBC链接数据库并操作的基本流程
        1.加载驱动
        2.使用DriverManager利用驱动与数据库建立连接,得到Connection对象
        3.通过连接对象创建用于执行SQL语句的语句对象:Statement
        4.通过Statement执行SQL,如果执行的是DQL语句,则会得到查询结果集ResultSet
        5.遍历结果集得到查询内容
        6.与数据库断开连接
         */
        //1.不同数据库厂商实现的Driver接口的实现类包名和实现类名不完全一样
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2
        Connection connection = DriverManager.getConnection(
                //数据库地址格式:jdbc:mysql://数据库IP:端口/数据库名?一堆参数
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                "root",//数据库用户名
                "root");//数据库密码
        System.out.println("成功连接数据库!");
        //3
        Statement statement = connection.createStatement();
        /*
            创建一张表,在终端写SQL语句,再复制粘贴
         */
        String sql="CREATE TABLE userinfo(\n" +
                "    id INT PRIMARY KEY AUTO_INCREMENT,\n" +
                "    username VARCHAR(30),\n" +
                "    password VARCHAR(30),\n" +
                "    nickname VARCHAR(30),\n" +
                "    age INT(3)\n" +
                ")";
        /*
        execute方法用于执行SQL语句
        boolean execute(String sql)
        返回值用于表达执行该SQL后是否存在查询结果集

        由于执行DML语句(INSERT,UPDATE,DELETE)和DQL语句(SELECT)有专门的方法
        因此execute方法通常仅用于执行DDL语句
         */
        statement.execute(sql);
        System.out.println("执行完毕!");
        //最终操作完毕与数据库断开连接
        connection.close();
    }
}
